#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    close(1);
    int fd = open("new.txt", O_CREAT|O_WRONLY|O_TRUNC, 0666);
    if(fd < 0)
    {
        perror("open");
        return 1;
    }

    // printf("fd: %d\n", fd);
    const char* message = "hello Linux\n";
    int cnt = 5;
    while(cnt)
    {
        write(1, message, strlen(message));
        cnt--;
    }
    close(fd);
    return 0;
}

// int main()
// {
//     printf("stdin->fd: %d\n", stdin->_fileno);
//     printf("stdout->fd: %d\n", stdout->_fileno);
//     printf("stderr->fd: %d\n", stderr->_fileno);
//     // umask(0);
//     // int fd = open("a.txt", O_WRONLY|O_TRUNC);
//     // if(fd < 0)
//     // {
//     //     perror("open");
//     //     return 1;
//     // }

//     // const char* message = "aaaa";
//     // write(fd, message, strlen(message));
//     // close(fd); // 关闭文件描述符
//     return 0;
// }


// int main()
// {
//     // chdir：更改进程路径

//     // printf("pid: %d\n", getpid());
//     // 打开的文件的路径和文件名，这个文件要是前面没有带路径，只是默认的文件名，打开的时候默认在当前路径下创建一个文件。
//     // 当前路径是什么？就是进程的当前路径。./myfile 执行起来就是一个进程，因此看这行命令在哪个路径下执行。
//     FILE* fp = fopen("log.txt", "w");
//     if(fp == NULL)
//     {
//         perror("fopen");
//         return 1;
//     }

//     const char* message = "abcd";
//     // strlen(message) + 1 -- 这里要不要+1，为什么？
//     // 字符串以'\0'结尾，是c语言的规定。和我文件有啥关系。因此只需要把字符串内容写进去就好。
//     // fwrite(message, strlen(message), 1, fp);
//     // sleep(1000);

//     const char* str1 = "aaa";
//     const char* str2 = "bbb";
//     fwrite(str1, strlen(str1), 1, stdout);
//     fprintf(stdout, "%s", str2);

//     fclose(fp);

//     return 0;
// }